From f8c21913ce252afe339c72ff4afc9b4a780deecc Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Mon, 29 Nov 2004 16:18:19 +0000 Subject: [PATCH] bitkeeper revision 1.1159.187.36 (41ab4bcbSa7RKAWie1XtrxBdva1gCA) isa_bus_to_virt fixes --- linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c | 2 +- linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c | 12 ++++++++---- .../include/asm-xen/asm-i386/fixmap.h | 2 +- linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h | 4 ++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c index 0a403abb51..fbf48798d3 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c @@ -597,7 +597,7 @@ void __init paging_init(void) HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO); memset(empty_zero_page, 0, sizeof(empty_zero_page)); -#ifdef CONFIG_XEN_PRIVILEGED_GUEST +#ifdef CONFIG_XEN_PHYSDEV_ACCESS /* Setup mapping of lower 1st MB */ for (i = 0; i < NR_FIX_ISAMAPS; i++) if (xen_start_info.flags & SIF_PRIVILEGED) diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c b/linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c index 7cec83afd6..f97d3f6b4d 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c @@ -259,10 +259,12 @@ void __iomem *ioremap_nocache (unsigned long phys_addr, unsigned long size) void iounmap(volatile void __iomem *addr) { struct vm_struct *p; - if ((unsigned long)addr <= 0x100000) - return; if ((void __force *) addr <= high_memory) return; +#ifdef CONFIG_XEN_PRIVILEGED_GUEST + if ((unsigned long) addr >= fix_to_virt(FIX_ISAMAP_BEGIN)) + return; +#endif p = remove_vm_area((void *) (PAGE_MASK & (unsigned long __force) addr)); if (!p) { printk("__iounmap: bad address %p\n", addr); @@ -332,10 +334,12 @@ void __init bt_iounmap(void *addr, unsigned long size) enum fixed_addresses idx; virt_addr = (unsigned long)addr; - if (virt_addr < 0x100000) - return; if (virt_addr < fix_to_virt(FIX_BTMAP_BEGIN)) return; +#ifdef CONFIG_XEN_PRIVILEGED_GUEST + if (virt_addr >= fix_to_virt(FIX_ISAMAP_BEGIN)) + return; +#endif offset = virt_addr & ~PAGE_MASK; nrpages = PAGE_ALIGN(offset + size - 1) >> PAGE_SHIFT; diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h b/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h index 794a6cd9a7..cf12d309e3 100644 --- a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h +++ b/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h @@ -85,7 +85,7 @@ enum fixed_addresses { #endif FIX_SHARED_INFO, FIX_GNTTAB, -#ifdef CONFIG_XEN_PRIVILEGED_GUEST +#ifdef CONFIG_XEN_PHYSDEV_ACCESS #define NR_FIX_ISAMAPS 256 FIX_ISAMAP_END, FIX_ISAMAP_BEGIN = FIX_ISAMAP_END + NR_FIX_ISAMAPS - 1, diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h b/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h index 2064f2d69a..0837c81cfa 100644 --- a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h +++ b/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h @@ -134,8 +134,8 @@ extern void bt_iounmap(void *addr, unsigned long size); */ #define isa_virt_to_bus(_x) isa_virt_to_bus_is_UNSUPPORTED->x #define isa_page_to_bus(_x) isa_page_to_bus_is_UNSUPPORTED->x -#ifdef CONFIG_XEN_PRIVILEGED_GUEST -#define isa_bus_to_virt(_x) (void *)__fix_to_virt(FIX_ISAMAP_BEGIN - ((_x) >> PAGE_SHIFT)) +#ifdef CONFIG_XEN_PHYSDEV_ACCESS +#define isa_bus_to_virt(_x) (void *)(__fix_to_virt(FIX_ISAMAP_BEGIN) + (_x)) #else #define isa_bus_to_virt(_x) isa_bus_to_virt_needs_PRIVILEGED_BUILD #endif -- 2.30.2